package com.Isb.Golf.inputgolfscore.Utility;

//import java.lang.reflect.Method;
//import java.net.InetAddress;
//import java.net.NetworkInterface;
//import java.net.SocketException;
//import java.util.ArrayList;
//import java.util.Enumeration;
//import java.util.List;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
//import android.net.wifi.WifiConfiguration;
//import android.net.wifi.WifiInfo;
//import android.net.wifi.WifiManager;

public class NetworkUtility {

	/** The Constant TAG. */

	/** The Constant WIFI_AP_STATE_ENABLING. */
//	private static final int WIFI_AP_STATE_ENABLING = 2;

	/** The Constant WIFI_AP_STATE_ENABLED. */
//	private static final int WIFI_AP_STATE_ENABLED = 3;

	/**
	 * Gets the available local ip address.
	 *
	 * @return the local available ip address array
	 */
//	protected static ArrayList<InetAddress> getAllLocalIpAddress() {
//
//		ArrayList<InetAddress> llstAddress = new ArrayList<InetAddress>();
//
//		try {
//			for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
//				NetworkInterface intf = en.nextElement();
//				for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
//					InetAddress inetAddress = enumIpAddr.nextElement();
//
//					if (!inetAddress.isLoopbackAddress()) {
//						llstAddress.add(inetAddress);
//					}
//				}
//			}
//		} catch (SocketException ex) {
//			llstAddress = null;
//		}
//
//		return llstAddress;
//	}

//	/**
//	 * Gets the local ip address.
//	 *
//	 * @param context
//	 *            the application context
//	 * @return the local ip address
//	 */
//	public static InetAddress getLocalIPAddress(Context context) {
//
//		InetAddress lLocalAddr = null;
//		InetAddress tmp = null;
//
//		try {
//			ArrayList<InetAddress> llstLocalAddr = getAllLocalIpAddress();
//
//			if (llstLocalAddr == null) {
//				return lLocalAddr;
//			}
//
//			for (InetAddress ladd : llstLocalAddr) {
//				if (!(ladd.isLinkLocalAddress() || ladd.isLoopbackAddress())) {
//					if (ladd.getHostAddress().startsWith("10.")) {
//						tmp = ladd;
//					} else if (ladd.getHostAddress().startsWith("192.")) {
//						lLocalAddr = ladd;
//						break;
//					}
//				}
//			}
//			if (lLocalAddr == null) {
//				lLocalAddr = tmp;
//			}
//
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//
//		return lLocalAddr;
//	}

//	/**
//	 * Gets the mac address.
//	 *
//	 * @param context
//	 *            the application context
//	 * @return the mac address
//	 */
//	public static String getMacAddress(Context context) {
//
//		String macAddress = null;
//
//		if (context == null) {
//			return macAddress;
//		}
//		try {
//			WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//			if (wifi != null) {
//				WifiInfo info = wifi.getConnectionInfo();
//				macAddress = info.getMacAddress();
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//
//		return macAddress;
//	}

//	/**
//	 * Checks wifi enabled.
//	 *
//	 * @param context
//	 *            the application context
//	 * @return true, if is wifi enabled,else false
//	 */
//	public static boolean isWifiEnabled(Context context) {
//
//		boolean result = false;
//
//		try {
//			WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//			if (wifiMgr.isWifiEnabled()) {
//				result = true;
//			}
//
//		} catch (Exception e) {
//			result = false;
//		}
//
//		return result;
//	}

//	/**
//	 * set wifi enabled.
//	 *
//	 * @param context
//	 *            the application context
//	 * @return true, if is wifi enabled,else false
//	 */
//	public static boolean setWifiEnabled(Context context) {
//
//		boolean result = false;
//
//		try {
//			WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//			// check the wifi hotspot
//			if(isWifiAPEnabled(context)){
//				setWifiApEnabled(context,null,false);
//			}
//			Thread.sleep(1000);
//			if (!wifiMgr.isWifiEnabled()) {
//				wifiMgr.setWifiEnabled(true);
//			}
//			result = true;
//
//		} catch (Exception e) {
//			result = false;
//		}
//
//		return result;
//	}

//	/**
//	 * set wifi disabled.
//	 *
//	 * @param context
//	 *            the application context
//	 * @return true, if is wifi disabled,else false
//	 */
//	public static boolean setWifiDisabled(Context context) {
//
//		boolean result = false;
//
//		try{
//			WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//			if(wifiMgr.isWifiEnabled()){
//				wifiMgr.setWifiEnabled(false);
//			}
//			result = true;
//
//		} catch(Exception e){
//			result = false;
//		}
//		return result;
//	}

//	public static boolean setWifiApEnabled(Context context,WifiConfiguration wifiConfig, boolean enabled) {
//
//		try {
//			WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//			Method method = wifiMgr.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
//
//			return (Boolean) method.invoke(wifiMgr, wifiConfig, enabled);
//		} catch (Exception e) {
//			return false;
//		}
//	}

//	public static int getActiveNetworkId(Context context){
//
//		int networkId = -1;
//
//		try {
//			WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//			if (wifiMgr.isWifiEnabled()) {
//				List<WifiConfiguration >configuredNetworks = wifiMgr.getConfiguredNetworks();
//				if (configuredNetworks != null) {
//					for (WifiConfiguration conf : configuredNetworks) {
//						if (conf.status == WifiConfiguration.Status.CURRENT) {
//							networkId = conf.networkId;
//							break;
//						}
//					}
//				}
//			}
//
//		} catch (Exception e) {
//			networkId = -1;
//		}
//		return networkId;
//	}

//	/**
//	 * Checks wifi ap enabled.
//	 *
//	 * @param context
//	 *            the application context
//	 * @return true, if is wifi ap enabled,else false
//	 */
//	public static boolean isWifiAPEnabled(Context context) {
//
//		int state = android.net.wifi.WifiManager.WIFI_STATE_UNKNOWN;
//
//		try {
//			java.lang.reflect.Method lMethod = null;
//
//			WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//			lMethod = wifiMgr.getClass().getMethod("getWifiApState");
//			state = ((Integer) lMethod.invoke(wifiMgr)).intValue();
//		} catch (Exception ex) {
//			state = android.net.wifi.WifiManager.WIFI_STATE_UNKNOWN;
//		}
//		// Fix for Android 4
//		if (state > 10) {
//			state = state - 10;
//		}
//		return (state == WIFI_AP_STATE_ENABLED) || (state == WIFI_AP_STATE_ENABLING);
//	}

	/**
	 * Checks connected.
	 *
	 * @param context
	 *            the context
	 * @return true, if is connected,else false
	 */
	public static boolean isConnected(Context context) {

		boolean isConnected = false;

		ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

		if (mWifi != null && (mWifi.isConnected())) {
			isConnected = true;
		}

		return isConnected;
	}

//	public static InetAddress getBroadcastAddress(InetAddress lAdd) {
//
//		InetAddress lAddr = null;
//		try {
//			do {
//				if (lAdd == null) {
//					break;
//				}
//
//				byte[] lbArr = lAdd.getAddress();
//				lbArr[lbArr.length - 1] = (byte) 255;
//				try {
//					lAddr = InetAddress.getByAddress(lbArr);
//				} catch (Exception ex) {
//					ex.printStackTrace();
//				}
//			} while (false);
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return lAddr;
//	}
}
